home *** CD-ROM | disk | FTP | other *** search
- (define (vector-copy v)
- (define lv (vector-length v))
- (do ((n (make-vector lv))
- (i 0 (1+ i)))
- ((= i lv) n)
- (vector-set! n i (vector-ref v i))))
-
- (define (vector-append x y)
- (let* ((lx (vector-length x))
- (ly (vector-length y))
- (n (make-vector (+ lx ly))))
- (do ((i 0 (1+ i)))
- ((= i (max lx ly)) n)
- (if (< i lx)
- (vector-set! n i (vector-ref x i)))
- (if (< i ly)
- (vector-set! n (+ i lx) (vector-ref y i))))))
-
- (define (vector-reverse v)
- (define lv (vector-length v))
- (do ((n (make-vector lv))
- (i 0 (1+ i)))
- ((= i lv) n)
- (vector-set! n i (vector-ref v (- lv i 1)))))
-
- (define (vector-reverse! v)
- (do ((lv (vector-length v))
- (tmp '())
- (i 0 (1+ i)))
- ((> i (/ lv 2)) v)
- (set! tmp (vector-ref v i))
- (vector-set! v i (vector-ref v (- lv i 1)))
- (vector-set! v (- lv i 1) tmp)))
-
- (define (vector-map v p)
- (define lv (vector-length v))
- (do ((n (make-vector lv))
- (i 0 (1+ i)))
- ((= i lv) n)
- (vector-set! n i (p (vector-ref v i)))))
-
- (define (vector-for-each v p)
- (do ((lv (vector-length v))
- (i 0 (1+ i)))
- ((= i lv))
- (p (vector-ref v i))))
-